package javaJob.exercise.primary.array;

import java.util.*;

public class primary6 {
    public static void main(String[] args) {
        int[] num1={4,9,5};
        int[] num2={9,4,9,8,4};
        int[] answer = intersect(num1,num2);
        for (int i=0;i<answer.length;i++){
            System.out.println(answer[i]);
        }

    }

    static int[] intersect(int[] nums1, int[] nums2) {
//        int i=0;
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        HashSet<Integer> set1 = new HashSet<>();//对应nums1中的元素
        HashSet<Integer> set2 = new HashSet<>();//对应nums2中的元素
        List list = new ArrayList();//记录目标元素
        List array0 = new ArrayList();//记录两个数组中相同的元素

        for (int num1:nums1){
            set1.add(num1);
        }
        for (int num2:nums2){
            set2.add(num2);
        }
        for (int tag:set2){
            if (set1.contains(tag)){
                array0.add(tag);
            }
//            if (set1.contains(tag) & i<set2.size()){
//                array0.add(tag);
//                i=i+1;
//            }
//            else {
//                continue;
//            }
        }

        //将集合元素放到数组中
        int[] array = new int[array0.size()];
        for (int l=0;l<array0.size();l++){
            array[l]=(int)array0.get(l);//强制转换类型
        }

        System.out.println("array赋值完成");

        for (int j=0;j<array.length;j++){
            int time1=0;
            int time2=0;
            for (int l=0;l<nums1.length;l++){
                if (array[j]==nums1[l]){
                    time1=time1+1;
                    System.out.println("1--array[j]"+array[j]+"---"+time1);
                }
            }
            for (int l=0;l<nums2.length;l++){
                if (array[j]==nums2[l]){
                    time2=time2+1;
                    System.out.println("2--array[j]"+array[j]+"---"+time2);
                }
            }

            System.out.println("元素出现次数计算完成");

//            if (time1>=time2)
            if (time2 <= time1){
                for (int l=0;l<time2;l++){
                    list.add(array[j]);
                    System.out.println("time2<=time1 list元素:"+list);
                }
            }else {
                for (int l=0;l<time1;l++){
                    list.add(array[j]);
                    System.out.println("time2>time1 list元素:"+list);
                }
            }

            System.out.println("次数比较完成");
        }

        int[] answer = new int[list.size()];
        for (int l=0;l<list.size();l++){
            answer[l]= (int) list.get(l);
        }
//        for (int l=0;l<list.size();l++){
//            answer[l]=iterator.next();
//            System.out.println(answer[l]);
//        }
//        while (iterator.hasNext()){
//            answer[answer_index]=iterator.next();
//            answer_index=answer_index+1;
//            System.out.println(answer[answer_index]);
//        }

        return  answer;
//        if (set1.size()>set2.size()){
//            int i=0;
//            for (int tag1:set2){
//                if (set1.contains(tag1)){
//                    array1[i]=tag1;
//                }
//            }
//        }
//        else if (set1.size()<=set2.size()){
//            int i=0;
//            for (int tag2:set1){
//                if (set2.contains(tag2)){
//                    array2[i]=tag2;
//                }
//            }
//        }
    }
}
